#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/wait.h>


int main()
{
  printf("testexec ... begin\n");

  pid_t id = fork();

  if(id == 0)
  {
    putenv("HHHH=1111111111111111111");
    char *const argv[] =
    {
      "mypragma",
      "-a",
      "-b",
      NULL
    };
   // char *const envp[] = 
   // {
   //   "hello = pupu",
   //   "hi = puapua",
   //   NULL
   // };    
    printf("i'm child, mypid: %d\n", getpid());
    sleep(2);
    extern char** environ;
    execvpe("./mypragma", argv, environ);
    //execvpe("./mypragma", argv, envp);
   // execl("/usr/bin/bash", "bash", "test.sh", NULL);
   // execl("./mypragma", "mypragma", NULL);
    //child
   // sleep(2);
   // char* const argv[] = 
   //  {
  
   //   "-l",
   //   "-a",
   //   "--color",
   //   NULL
   // };
   // execl("/usr/bin/ls", "ls", "-all", NULL);
   // execv("/usr/bin/ls", argv);
   //execvp("ls", argv);
   // execlp("ls", "ls", "-l", "-a", NULL);
    exit(1);
  }
  //father
  int status = 0;
  pid_t rid = waitpid(id, &status, 0);

  if(rid == id)
  {
    printf("father wait success, child exit code : %d\n", WEXITSTATUS(status));
  }
  printf("testexec ... end\n");
  return 0;
}
